#ifndef LOGIN_H  // 防止头文件被重复包含
#define LOGIN_H  // 定义LOGIN_H宏，确保头文件只被编译一次

#include "head.h"  
#include <QWidget>  // 包含QWidget类，用于创建窗口
#include <QSpacerItem>  // 包含QSpacerItem类，用于在布局中添加空白区域（弹簧）
// 命名空间Ui，用于存放由Qt Designer生成的UI类
namespace Ui
{
    class login;  // 前向声明，表示Ui命名空间中有一个login类
}

// 登录窗口类，继承自QWidget
class login : public QWidget
{
    Q_OBJECT  // 宏，启用Qt的信号与槽机制

public:
    // 构造函数，parent参数指定父窗口，默认为nullptr（无父窗口）
    explicit login(QWidget *parent = nullptr);
    // 析构函数，释放资源
    ~login();
    
public slots:  // 槽函数，用于响应信号
    void registerFn();  // 注册槽函数，处理注册逻辑

signals:  // 信号，用于通知其他对象
    // void loginSuccess();
    void toRegister();    // 注册信号
    void toChangePassword();  // 修改密码信号

private:  // 私有成员变量，用于存储窗口的控件和布局
    Ui::login *ui;  // 指向由Qt Designer生成的UI对象

    // 控件
    QLineEdit *usernameEdit;  // 用户名输入框
    QLabel *userLabel;        // 用户名标签
    QLineEdit *passwordEdit;  // 密码输入框
    QLabel *passLabel;        // 密码标签
    QPushButton *loginButton; // 登录按钮

    // 布局
    QHBoxLayout *Hlayout;  // 水平布局
    QVBoxLayout *Vlayout;  // 垂直布局
    QHBoxLayout *smallBtnHlayout;  // 用于放置“注册”和“忘记密码”按钮的水平布局

    // 空白区域（弹簧）
    QSpacerItem *topSpace;  // 顶部空白区域
    QSpacerItem *bottomSpace;  // 底部空白区域
    QSpacerItem *leftSpace;  // 左侧空白区域
    QSpacerItem *rightSpace;  // 右侧空白区域
    QSpacerItem *usernameSpace;  // 用户名输入框下方的空白区域
    QSpacerItem *passwordSpace;  // 密码输入框下方的空白区域
    QSpacerItem *loginButtonSpace;  // 登录按钮下方的空白区域
};

#endif // LOGIN_H  // 结束头文件定义